package cn.mw.cmdb.template.param;

import cn.mw.cmdb.template.entity.convert.InterfaceConvertDto;
import cn.mw.cmdb.template.entity.convert.MwHostGroupConvertDto;
import cn.mw.cmdb.template.entity.convert.MwTemplateConvertOne;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import java.util.List;
import java.util.Map;

/**
 * @author gengjb
 * @description 主机zabbix实体映射
 * @date 2024/8/27 16:36
 */
@Getter
@Setter
@Schema(name = "HostParam", description = "主机zabbix实体映射")
public class HostParam {

    @Schema(description = "主机的ID")
    private String hostid;

    @Schema(description = "主机的正式名称")
    private String host;

    @Schema(description = "可见的主机名")
    private String name;

    @Schema(description = "主机的描述信息")
    private String description;

    @Schema(description = "主机的来源。0—普通主机;4—自动发现的主机。")
    private String flags;

    @Schema(description = "主机资产模式。-1 - (默认) 禁用的;0 - 手动的;1 - 自动的。")
    private String inventory_mode;

    @Schema(description = "IPMI 验证算法。-1 - (默认) default;0 - none;1 - MD2;2 - MD54 - straight;5 - OEM;6 - RMCP+.")
    private String ipmi_authtype;

    @Schema(description = "IPMI 密码")
    private String ipmi_password;

    @Schema(description = "IPMI 权限等级。1 - callback;2 - (默认) user;3 - operator;4 - admin;5 - OEM.")
    private String ipmi_privilege;

    @Schema(description = "IPMI 用户名")
    private String ipmi_username;

    @Schema(description = "时间戳 有效维护启动时间")
    private String maintenance_from;

    @Schema(description = "有效的维护状态。0 - (默认)不维护;1 -有效维护。")
    private String maintenance_status;

    @Schema(description = "有效的维护类型。0 - (默认) 数据收集维护;1 - 数据不收集维护。")
    private String maintenance_type;

    @Schema(description = "主机上当前生效的维护ID")
    private String maintenanceid;

    @Schema(description = "监控主机的Proxy ID")
    private String proxy_hostid;
    @Schema(description = "主机的状态和功能。0 - (默认) 开启监控的主机;1 - 没有开启监控的主机。")
    private String status;
    @Schema(description = "链接到主机。1 - (默认) 没有加密;2 - PSK;4 - 已加密")
    private String tls_connect;
    @Schema(description = "连接主机。1 - (默认) 未加密;2 - PSK;4 - 已认证.")
    private String tls_accept;
    @Schema(description = "证书问题。")
    private String tls_issuer;
    @Schema(description = "证书发行者。")
    private String tls_subject;
    @Schema(description = "PSK 认证。 如果启用了 tls_connect 或 tls_accept ，则需要。")
    private String tls_psk_identity;
    @Schema(description = "预共享密钥，至少32位十六进制数字。如果启用了 tls_connect 或 tls_accept ，则需要。")
    private String tls_psk;
    @Schema(description = "监控项数量")
    private String items;
    @Schema(description = "自动发现数量")
    private String discoveries;
    @Schema(description = "触发器数量")
    private String triggers;
    @Schema(description = "标记")
    private List<Map> tags;

    @Schema(description = "主机的模板")
    private List<MwTemplateConvertOne> parentTemplates;

    @Schema(description = "主机接口信息")
    private List<InterfaceConvertDto> interfaces;

    @Schema(description = "主机群组")
    private List<MwHostGroupConvertDto> groups;

    @Schema(description = "主机群组")
    private List<HostParam> inventory;


}
